home *** CD-ROM | disk | FTP | other *** search
/ Aminet 19 / Aminet 19 (1997)(GTI - Schatztruhe)[!][Jun 1997].iso / Aminet / disk / misc / NewHackdisk.lha / NewHackdisk / HackDiskTest.ASM < prev    next >
Assembly Source File  |  1997-03-25  |  2KB  |  104 lines

  1. ; FILE: Source:HackdiskTest.ASM          REV: 1 --- test for hackdisk.device
  2. ; History
  3. ;  0      I took the original hackdisk V2.02 release source and rewrote it
  4. ;
  5.  
  6. ; HackdiskTest.ASM -- test for hackdisk and print out IDString
  7. ; Returns error level 5 if Hackdisk is not installed.
  8.  
  9.     include    "exec/types.i"
  10.     include    "exec/libraries.i"
  11.     include    "exec/execbase.i"
  12.     include    "dos/dosextens.i"
  13.     include    "exec/exec_lib.i"
  14.     include    "dos/dos_lib.i"
  15. call    MACRO
  16.     jsr    (_LVO\1,a6)
  17.     ENDM
  18.  
  19. Main    move.l    (4).w,a6
  20.     move.l    a6,_ExecBase
  21.     bsr.b    InitDOS
  22.     move.l    (_DosBase,pc),d0
  23.     beq.b    .end
  24.     lea    (DeviceList,a6),a0
  25.     lea    (TrackDiskName,pc),a1
  26.     call    Forbid
  27.     call    FindName
  28.     call    Permit
  29.     tst.l    d0
  30.     beq.b    .end        system is serously screwed!
  31.     move.l    d0,a0
  32.     move.l    (LIB_IDSTRING,a0),a0
  33.     move.l    a0,d0
  34.     beq.b    .notinstalled
  35.     bsr.b    Print
  36.     moveq    #0,d0
  37.     cmp.b    #'H',(a0)
  38.     beq.b    .end
  39.  
  40. .notinstalled    moveq    #5,d0
  41. .end    bra.b    CloseDOS
  42.  
  43. Print:
  44. ;Output a string to the CLI
  45. ;Enter with pointer to a zero-terminated string in a0
  46. ;All registers are preserved
  47.  
  48.     movem.l    d0-d3/a0-a1/a6,-(sp)
  49.     move.l    a0,d2
  50.     moveq    #-1,d3
  51. .getlen    addq.l    #1,d3
  52.     tst.b    (a0)+
  53.     bne.b    .getlen
  54.     move.l    (_DosBase,pc),a6
  55.     call    Output
  56.     move.l    d0,d1  
  57.     call    Write
  58.     movem.l    (sp)+,d0-d3/a0-a1/a6
  59.     rts
  60.  
  61. InitDOS:
  62. ;Open dos.library
  63. ;Should check _DosBase afterward in case of fatel error (unlikely)
  64.  
  65.     movem.l    d0-d1/a0-a1/a6,-(sp)
  66.     move.l    (_ExecBase,pc),a6
  67.     sub.l    a1,a1
  68.     call    FindTask
  69.     move.l    d0,a0
  70.     tst.l    (pr_CLI,a0)    ; executed from CLI?
  71.     beq.b    .end        ; no
  72.     moveq    #0,d0
  73.     move.w    #_LVOOldOpenLibrary,d1
  74.     cmp.w    #31,(LIB_VERSION,a6)
  75.     blo.b    .open
  76.     move.w    #_LVOOpenLibrary,d1
  77. .open    lea    (.DosName,pc),a1
  78.     jsr    0(a6,d1.w)
  79.     move.l    d0,_DosBase
  80. .end    movem.l    (sp)+,d0-d1/a0-a1/a6
  81.     rts
  82. .DosName:    dc.b    'dos.library',0
  83.     even
  84.  
  85.     CNOP    0,4
  86. _ExecBase:    dc.l    0
  87. _DosBase:    dc.l    0
  88.  
  89. CloseDOS:    movem.l    d0-d1/a0-a1/a6,-(sp)
  90.     lea    (_DosBase,pc),a0
  91.     tst.l    (a0)
  92.     beq.b    .end
  93.     move.l    (a0),a1
  94.     clr.l    (a0)
  95.     move.l    (_ExecBase,pc),a6
  96.     call    CloseLibrary
  97. .end    movem.l    (sp)+,d0-d1/a0-a1/a6
  98.     rts
  99.  
  100. TrackDiskName:
  101.     dc.b    'trackdisk.device',0
  102.  
  103.     END
  104.